pub mod classes {
    #[derive(Debug)]
    pub struct ClassesInfo {
        // 班级id
        pub id:                 u64,
        // 班级名称             
        pub classes_name:       String,
        // 年级id
        pub grade_id:           u64,
        // 学校id
        pub school_id:          u64
    }
}


pub mod student {
    // #[derive(Debug)] 打印宏
    #[derive(Debug)]
    pub enum Sex {
        WOMAN   = 0,
        MAN     = 1,
    }

    #[derive(Debug)]
    pub struct PeopleInfo {
        // 姓名
        pub name:               String,
        // 年龄
        pub age:                u8,
        // 性别
        pub sex:                Sex,
    }

    impl PeopleInfo {
        // 实例方法
		pub fn sex(&mut self, sex: Sex) -> () {
			self.sex = sex;
		}
    }

    // Rust只有组合没有继承
    #[derive(Debug)]
    pub struct StudentInfo {
        // 班级id
        pub classes_id:         u64,
        // 学号
        pub student_no:         String,
        // 人信息
        pub people:             PeopleInfo,
        // 头像
        pub profile_photo_url:  Option<String>
    }
	
	// 实现 为类型定义动作
	impl StudentInfo {
		// 类方法
		pub fn of(classes_id: u64, student_no: String, name: String, age: u8, sex: Sex, profile_photo_url: Option<String>) -> Self {
			StudentInfo { classes_id: classes_id, student_no: student_no, people: PeopleInfo{name: name, age: age, sex: sex}, profile_photo_url: profile_photo_url }
		}
	}
}